Encoding and decoding apparatus and method

ABSTRACT

An interleaver and method of interleaving operate on data represented in a sequence of symbols to produce an interleaved sequence of symbols. The interleaver performs intra-block and inter-block permutations on the sequence of symbols. An encoder and method of encoding operate on data represented in a source sequence of symbols. The source sequence of symbols is encoded into a first sequence of codewords and interleaved using intra-block and inter-block permutations to produce a sequence of interleaved symbols. The sequence of interleaved symbols is encoded into a second sequence of codewords. A decoder and method of decoding operate on data represented in a sequence of received symbols. The sequence of received symbols comprises a formatted copy of the source sequence of symbols and the first and the second sequence of codewords.

DESCRIPTION OF THE INVENTION

The present patent claims benefit of U.S. provisional patent application60/314,673, titled Interleaver Design and Associated Encoding andDecoding Structures for Turbo Codes, filed on Aug. 27, 2001, by Yan-XiuZheng, Yu T. Su, and Wei-Ting Wang, the contents of which areincorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to encoding and decoding apparatus andmethod and, more particularly, to such apparatus and method includinginterleaving for improved performance.

BACKGROUND OF THE INVENTION

Methods for reducing error rates in data transmission may involve usingencoding algorithms to encode data with error correcting codes. At areceiving end, the encoded data is decoded by decoding algorithms toreproduce the originally transmitted data with low occurrences of error.However, highly effective error correcting codes usually require complexdecoding algorithms and such complex decoding algorithms can bedifficult to implement.

Turbo codes provide a compromise between error correction and decodercomplexity. Turbo codes employ concatenated coding in which two or moreconstituent codes are used sequentially or in parallel, usually withsome form of an interleaver structure in between. The first constituentcode has codewords used for checking and correcting of the data beingencoded. The second constituent code has codewords used for checking andcorrecting of the data being encoded after interleaving. Individuallythe constituent codes are of limited effectiveness in error correction,but depending on the interleaver structure, the combination of the twoconstituent codes is surprisingly effective, if a proper decodingalgorithm is used.

The interleaver permutes the data being encoded to ensure that databeing encoded for which one constituent code has low-weight codewordscauses the other constituent code to have high-weight codewords. Theweight of a codeword is defined as the number of nonzero coordinates inthe codeword. How well interleaving succeeds in ensuring high-weightcodewords depends on the depth of interleaving and the interleaverstructure. Interleaver depth is defined to be the maximum difference inposition that a symbol in the data being encoded has before and afterinterleaving. The greater the interleaver depth, the greater likelihoodthat the codewords of the two constituent codes favorably complementeach other to create highly effective error correction for the databeing encoded.

At the receiving end, the two constituent codes are decoded withrespective decoders to produce estimates of the data before encoding.Each decoder decodes its respective constituent code and sends aposteriori data estimates, estimates based only on received encodeddata, to the other decoder. Each decoder then uses the a posterioriestimates from the other decoder as a priori information to produce apriori estimates, estimates based on prior information known about theencoded data. A priori estimates from each decoder are sent to the otherdecoder to produce new a priori estimates. This last step is iteratedseveral times to yield progressively better a priori estimates untilsatisfactory convergence is reached. The generation of an a priori or aposteriori estimate is referred to as a decoding iteration.

In spite of their powerful error correcting capability, turbo codes aregenerally viewed as more suitable for applications that do not havestringent delay requirements. However, it may be desirable to reducedelays associated with decoding in turbo codes to take advantage oftheir relatively simple implementation and error correction strengths incertain applications.

SUMMARY OF THE INVENTION

Methods, devices, systems, and articles of manufacture consistent withthe present invention enable parallel encoding and decoding in turbocodes for shorter decoding delays and increased design flexibility forvarious applications.

One exemplary aspect consistent with features and principles of thepresent invention is an encoder that operates on data represented in asource sequence of symbols. The encoder comprises primary encoding meansfor encoding the source sequence of symbols into a first sequence ofcodewords, interleaving means for performing intra-block and inter-blockpermutations on the source sequence of symbols to produce a sequence ofinterleaved symbols, and secondary encoding means for encoding thesequence of interleaved symbols into a second sequence of codewords.

A second exemplary aspect consistent with features and principles of thepresent invention is a decoder that operates on data represented in asequence of received symbols. The sequence of received symbols comprisesa source sequence of symbols and a first and a second sequence ofcodewords. The decoder comprises primary decoding means for decoding thefirst sequence of codewords in combination with the source sequence ofsymbols to produce a sequence of primary decoded symbols, interleavingmeans for performing intra-block and inter-block permutations on thesource sequence of symbols and the sequence of primary decoded symbolsto produce a sequence of interleaved symbols and a sequence ofintermediate symbols, respectively, secondary decoding means fordecoding the second sequence of codewords in combination with thesequence of interleaved symbols and the sequence of intermediate symbolsto produce a sequence of secondary decoded symbols, and de-interleavingmeans for performing inter-block and intra-block permutations on thesequence of secondary decoded symbols to produce a sequence of estimatedsymbols.

A third exemplary aspect consistent with features and principles of thepresent invention is a system that operates on data represented in asource sequence of symbols. The system comprises primary encoding meansfor encoding the source sequence of symbols into a first sequence ofcodewords, first interleaving means for performing intra-block andinter-block permutations on the source sequence of symbols to produce asequence of interleaved symbols, secondary encoding means for encodingthe sequence of interleaved symbols into a second sequence of codewords,output means for combining and sending the source sequence of symbols,the first sequence of codewords, and the second sequence of codewords toa medium as a sequence of received symbols, receiving means forreceiving the sequence of received symbols from the medium, primarydecoding means for decoding the first sequence of codewords incombination with the source sequence of symbols to produce a sequence ofprimary decoded symbols, second interleaving means for performingintra-block and inter-block permutations on the source sequence ofsymbols and the sequence of primary decoded symbols to produce asequence of decoder interleaved symbols and a sequence of intermediatesymbols, respectively, secondary decoding means for decoding the secondsequence of codewords in combination with the sequence of decoderinterleaved symbols and the sequence of intermediate symbols to producea sequence of secondary decoded symbols, and de-interleaving means forperforming inter-block and intra-block permutations on the sequence ofsecondary decoded symbols to produce a sequence of estimated symbols.

A fourth exemplary aspect consistent with features and principles of thepresent invention is a system that operates on data represented in asource sequence of symbols. The system comprises primary encoding meansfor encoding the source sequence of symbols into a first sequence ofcodewords, first interleaving means for interleaving the source sequenceof symbols using intra-block and inter-block permutations to produce asequence of interleaved symbols, secondary encoding means for encodingthe sequence of interleaved symbols into a second sequence of codewords,output means for combining and sending the source sequence of symbols,the first sequence of codewords, and the second sequence of codewords toa medium as the sequence of received symbols, receiving means forreceiving the sequence of received symbols from the medium, plurality ofprimary decoding means for decoding the first sequence of codewords incombination with the source sequence of symbols to produce a pluralityof sequences of primary decoded symbols, second interleaving means forinterleaving the source sequence of symbols using intra-block andinter-block permutations to produce a sequence of decoder interleavedsymbols, plurality of intermediate interleaving means for interleavingthe plurality of sequences of primary decoded symbols using intra-blockand inter-block permutations to produce a plurality of respectivesequences of intermediate symbols, plurality of secondary decoding meansfor decoding the second sequence of codewords in combination with thesequence of decoder interleaved symbols to produce a plurality ofsequences of secondary decoded symbols, and plurality of de-interleavingmeans for de-interleaving the plurality of sequences of the secondarydecoded symbols to produce a plurality of respective sequences ofestimated symbols. An I^(th) one of the plurality of secondary decodingmeans for decoding the second sequence of codewords uses an I^(th) oneof the plurality of sequences of intermediate symbols. An (I+1)^(th) oneof the plurality of primary decoding means for decoding the firstsequence of codewords uses an I^(th) one of the plurality of thesequences of estimated symbols.

A fifth exemplary aspect consistent with features and principles of thepresent invention is a method for encoding data represented in a sourcesequence of symbols. The method comprises encoding the source sequenceof symbols into a first sequence of codewords, interleaving the sourcesequence of symbols using intra-block and inter-block permutations toproduce a sequence of interleaved symbols, and encoding the sequence ofinterleaved symbols into a second sequence of codewords.

A sixth exemplary aspect consistent with features and principles of thepresent invention is a method for decoding data represented in asequence of received symbols. The sequence of received symbols comprisesa source sequence of symbols to be estimated and a first and a secondsequence of codewords to be decoded. The method comprises decoding thefirst sequence of codewords in combination with the source sequence ofsymbols to produce a sequence of primary decoded symbols, interleavingthe source sequence of symbols and the sequence of primary decodedsymbols using intra-block and inter-block permutations to produce asequence of interleaved symbols and a sequence of intermediate symbols,respectively, decoding the second sequence of codewords in combinationwith the sequence of interleaved symbols and the sequence ofintermediate symbols to produce a sequence of secondary decoded symbols,and de-interleaving the sequence of secondary decoded symbols usinginter-block and intra-block permutations to produce a sequence ofestimated symbols.

A seventh exemplary aspect consistent with features and principles ofthe present invention is a method for operating on data represented in asource sequence of symbols. The method comprises encoding the sourcesequence of symbols into a first sequence of codewords, interleaving thesource sequence of symbols using intra-block and inter-blockpermutations to produce a sequence of interleaved symbols, encoding thesequence of interleaved symbols into a second sequence of codewords,combining and sending the source sequence of symbols, the first sequenceof codewords, and the second sequence of codewords to a medium as thesequence of received symbols, receiving the sequence of received symbolsfrom the medium, decoding the first sequence of codewords in combinationwith the source sequence of symbols to produce a sequence of primarydecoded symbols, interleaving the source sequence of symbols and thesequence of primary decoded symbols using intra-block and inter-blockpermutations to produce a sequence of decoder interleaved symbols and asequence of intermediate symbols, respectively, decoding the secondsequence of codewords in combination with the sequence of decoderinterleaved symbols and the sequence of intermediate symbols to producea sequence of secondary decoded symbols, and de-interleaving thesequence of secondary decoded symbols using inter-block and intra-blockpermutations to produce a sequence of estimated symbols.

An eighth exemplary aspect consistent with features and principles ofthe present invention is a method for operating on data represented in asource sequence of symbols. The method comprises encoding the sourcesequence of symbols into a first sequence of codewords, interleaving thesource sequence of symbols using intra-block and inter-blockpermutations to produce a sequence of interleaved symbols, encoding thesequence of interleaved symbols into a second sequence of codewords,combining and sending the source sequence of symbols, the first sequenceof codewords, and the second sequence of codewords to a medium as thesequence of received symbols, receiving the sequence of received symbolsfrom the medium, decoding the first sequence of codewords in combinationwith the source sequence of symbols to produce a plurality of sequencesof primary decoded symbols, interleaving the source sequence of symbolsusing intra-block and inter-block permutations to produce a sequence ofdecoder interleaved symbols, interleaving the plurality of sequences ofprimary decoded symbols using intra-block and inter-block permutationsto produce a plurality of respective sequences of intermediate symbols,decoding the second sequence of codewords in combination with thesequence of decoder interleaved symbols to produce a plurality ofsequences of secondary decoded symbols, and de-interleaving theplurality of sequences of secondary decoded symbols to produce aplurality of respective sequences of estimated symbols. An I^(th) one ofthe plurality of sequences of intermediate symbols is used in decodingthe second sequence of codewords in combination with the sequence ofdecoder interleaved symbols to produce an I^(th) one of the plurality ofsequences of secondary decoded symbols. An I^(th) one of the pluralityof sequences of estimated symbols is used in decoding the first sequenceof codewords in combination with the source sequence of symbols toproduce an (I+1)^(th) one of the plurality of sequences of primarydecoded symbols.

Additional aspects of the invention are set forth in the descriptionwhich follow, and in part are obvious from the description, or may belearned by practice of methods, devices, systems, and articles ofmanufacturer consistent with features of the present invention. Theaspects of the invention are realized and attained by means of theelements and combinations particularly pointed out in the appendedclaims. It is understood that both the foregoing description and thefollowing detailed description are exemplary and explanatory only andare not restrictive of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate several aspects of the inventionand, together with the description, serve to explain the principles ofthe invention. In the drawings,

FIG. 1 illustrates an exemplary encoder in which methods, devices,systems, and articles of manufacturer, consistent with features andprinciples of the present invention may be implemented;

FIG. 2A illustrates an exemplary construction of an interleaverconsistent with features and principles of the present invention;

FIG. 2B illustrates results at different temporal stages of theexemplary interleaver consistent with features and principles of thepresent invention;

FIG. 2C further illustrates results at different temporal stages of theexemplary interleaver consistent with features and principles of thepresent invention;

FIG. 3 illustrates an exemplary decoder in which methods, devices,systems, and articles of manufacturer, consistent with features andprinciples of the present invention may be implemented;

FIG. 4 illustrates an exemplary parallel decoder in which methods,devices, systems, and articles of manufacturer, consistent with featuresand principles of the present invention may be implemented;

FIG. 5A illustrates a timing diagram for the exemplary interleaverconsistent with features and principles of the present invention;

FIG. 5B illustrates a timing diagram for the exemplary encoderconsistent with features and principles of the present invention; and

FIG. 6 illustrates a timing diagram for the exemplary parallel decoderconsistent with features and principles of the present invention;

FIG. 7 illustrates another exemplary construction of an interleaverconsistent with features and principles of the present invention;

FIG. 8 illustrates a flowchart for an exemplary interleaver algorithm;and

FIG. 9 illustrates a flowchart for an exemplary interleaver andde-interleaver algorithm.

DESCRIPTION OF EMBODIMENTS

Reference is now made in detail to the exemplary embodiments of theinvention, examples of which are illustrated in the accompanyingdrawings. Wherever possible, the same reference numbers are usedthroughout the drawings to refer to the same or like parts.

One approach to reduce delays associated with decoding in turbo codes isto find a way to start a decoding iteration before the previousiteration ends. This would allow parallel decoding. However,conventional interleavers used in turbo codes do not render themselvessuitable for parallel decoding. Features and principles consistent withthe present invention illustrate, among other things, an interleavingdesign that allows parallel decoding.

FIG. 1 illustrates an exemplary encoder 100 in which features andprinciples consistent with the present invention may be implemented.Encoder 100 includes input data represented as a source sequence ofsymbols X 101 to be encoded, a formatted copy X1 102 of the sourcesequence of symbols, a first sequence of codewords Y1 103, a secondsequence of codewords Y2 104, a primary encoder 105, a secondary encoder106, an interleaver 107, and a sequence of interleaved symbols 108. Theprimary encoder 105 encodes the source sequence of symbols X 101 intothe first sequence of codewords Y1 103 using a predetermined encodingalgorithm. The encoding algorithm may be any algorithm known in the artand compatible with the operation of the present invention. Exemplaryencoding algorithms may include convolutional codes such as described onpages 469-508 by Carson in Communication Systems, An Introduction toSignals and Noise in Electrical Communication, 3^(rd) Ed., McGraw-HillBook Company, New York, 1986.

The primary encoder 105 also copies and formats the source sequence ofsymbols X 101 to produce the formatted copy X1 102 of the sourcesequence of symbols. The interleaver 107 permutes the source sequence ofsymbols X 101 into the sequence of interleaved symbols 108. Thesecondary encoder 106 encodes the sequence of interleaved symbols 108into the second sequence of codewords Y2 104. The formatted copy X1 102of the source sequence of symbols, the first sequence of codewords Y1103, and the second sequence of codewords Y2 104 are transmitted over amedium (not shown). Exemplary methods for combining and transmitting mayinclude systematic block codes as described in Carson, cited above. Themedium may be anything capable of conveying or storing information andincludes communication channels, ambient space, and storage devices.Exemplary storage devices include magnetic media, random access memory,and printed materials.

FIG. 2A illustrates an exemplary construction of the interleaver 107 inthe encoder 100 consistent with features and principles of the presentinvention. The interleaver 107 includes a first blocker 201, anintra-permuter 202, a second blocker 203, and an inter-permuter 204. Theinterleaver 107 permutes the order of symbols in the source sequence ofsymbols X 101 into a sequence of interleaved symbols 108. In itsoperation, the interleaver 107 produces a sequence of blocks 205, asequence of intra-permuted symbols 206, and a sequence of intra-permutedblocks 207. The source sequence of symbols X 101 is grouped into thesequence of blocks 205 by the first blocker 201. The intra-permuter 202re-orders the symbols within each block of the sequence of blocks 205 toform the sequence of intra-permuted symbols 206. The sequence ofintra-permuted symbols 206 is grouped into the sequence ofintra-permuted blocks 207 by the second blocker 203. The inter-permuter204 re-orders the symbols across the blocks in the sequence ofintra-permuted blocks 207 to form the interleaved output sequence ofsymbols 108.

FIG. 2B illustrates results at different temporal stages in theexemplary interleaver 107 consistent with features and principles of thepresent invention. The symbols in the source sequence of symbols X 101are labeled with numeric indices 211 starting from number one. Thesource sequence of symbols X 101 are grouped by the first blocker 201into the sequence of blocks 205. The blocks in the source sequence ofblocks 205 are represented as shaded symbols with indices 211, whereinsymbols having the same shade are in the same block. All the blocks inthe sequence 205 are of an equal length L 209 in symbols. For example, afirst block 212 in the sequence of blocks 205 contains the symbols inthe source sequence X 101 with indices 211, in order, from one to L. Asecond block 213 in the sequence of blocks 205 contains the symbols inthe source sequence X 101 with indices 211, in order, from L+1 to 2L.Subsequent blocks in the sequence of blocks 205 contain L symbols in thesource sequence X 101, wherein an I^(th) block in the sequence of blocks205 contains the symbols in the source sequence 205 with indices 211, inorder, from ((I−1)*L)+1 to I*L. More particularly, if L is equal to ten,then the first block 212 in the sequence of blocks 205 contains thesymbols in the source sequence X 101 with indices 211, in order, fromone to ten. The second block 213 in the sequence of blocks 205 containsthe symbols with indices 211, in order, from eleven to twenty. TheI^(th) block in the sequence of blocks contains ten symbols in thesource sequence X 101 with indices 211, in order, from ((I−1)*10)+1 toI*10.

The symbols within each block of the sequence of blocks 205 arere-ordered by the intra-permuter 202 to form the sequence ofintra-permuted symbols 206. The sequence of intra-permuted symbols 206is grouped into the sequence of intra-permuted blocks 207 by the secondblocker 203. The intra-permuted blocks in the sequence of intra-permutedblocks 207 may or may not have the same length in symbols as the blocksin the sequence of blocks 205, but for illustration, it is assumed thatthe lengths are equal, namely of length L 209. The first intra-permutedblock 214 in the sequence of intra-permuted blocks 207 contains thesymbols from then source sequence X 101 with indices 211, in a followingorder, two, five, one, six, and so forth to the L^(th) symbol in thefirst intra-permuted block 214. The second intra-permuted block 215 inthe sequence of intra-permuted blocks 207 contains symbols from thesource sequence X 101 with indices 211, in a following order, L+2, L+5,L+1, L+6, and so forth to the L^(th) symbol in the second intra-permutedblock 215. Subsequent intra-permuted blocks in the sequence ofintra-permuted blocks 207 contain L symbols from the source sequence X101, wherein a J^(th) intra-permuted block in the sequence ofintra-permuted blocks 207 contains symbols from the source sequence X101 with indices 211, in a following order, ((J−11)*L)+2, ((J−1)*L)+5,((J−1)*L)+1, ((J−1)*L)+6, and so forth to the L^(th) symbol in theJ^(th) intra-permuted block.

The symbols in the intra-permuted blocks of the sequence ofintra-permuted blocks 207 are re-ordered across a number of blocks B 210by the inter-permuter 204 to form the interleaved output sequence ofsymbols 108. For example, if the number of blocks B 210 to re-orderacross is equal to three, then the first L symbols in the interleavedoutput sequence 108 contain portions of the first and secondintra-permuted blocks 214 & 215 in the sequence of intra-permuted blocks207. The next L symbols 217 in the interleaved output sequence 108contain portions of the first to the third intra-permuted blocks in thesequence of intra-permuted blocks 207. The following L symbols 218 inthe interleaved output sequence 108 contain portions of the second tothe fourth intra-permuted blocks in the sequence of intra-permutedblocks 207.

The interleaver 107 allows encoding and decoding procedures to bedevised to handle a source sequence of symbols X 101 of finite orinfinite duration 208 while introducing a minimum decoding delay. Themaximum interleaver depth of the interleaver 107 can also be set byselecting the length L 209 in symbols of the blocks in the sequence ofintra-permuted blocks 207 and the number of blocks B 210 to re-ordersymbols across during inter-block permutation by the inter-permuter 204.The maximum interleaver depth is then the length L 209 multiplied by thenumber of blocks B 210.

FIG. 2C further illustrates results at different temporal stages of theexemplary interleaver consistent with features and principles of thepresent invention. In the example illustrated in FIG. 2C, the duration208 of the source sequence of symbols X 101 is of finite length andconsists of twenty-four symbols, the length L 209 of each block in thesequence of blocks 205 and the sequence of intra-permuted blocks 207 issix, and the number of blocks B 210 to inter-permute across is three.The symbols in the source sequence of symbols X 101 are labeled withindices 211 from one to twenty-four. The source sequence of symbols X101 is grouped into the sequence of blocks 205 with four blocks 220 ofsix symbols each. The blocks in the sequence of blocks 205 arerepresented as shaded symbols with indices 211, wherein symbols havingthe same shading are in the same block. The symbols within the sequenceof blocks 205 are intra-permuted within each block to produce thesequence of intra-permuted symbols 206. The intra-permutation re-ordersthe symbols within each block in the manner indicated by arrows 221. Forexample, the symbols in the first block of the sequence of blocks 205with indices one, two, three, four, five, and six are re-ordered to two,five, one, six, three, and four in the first six intra-permuted symbols222 of the sequence of intra-permuted symbols 206. The intra-permutedsymbols in the sequence 206 are grouped into the sequence ofintra-permuted blocks 207 with four intra-permuted blocks 223 of sixsymbols each. The intra-permuted blocks in the sequence ofintra-permuted blocks 207 are represented as shaded symbols with indices211, wherein symbols having the same shading are in the sameintra-permuted block. The sequence of intra-permuted blocks 207 areinter-permuted to the sequence of interleaved symbols 108 by re-orderingsymbols across the blocks 223 in the sequence of intra-permuted blocks207 in the manner indicated by arrows 224.

FIG. 3 illustrates an exemplary decoder 300 comprising features andprinciples consistent with the present invention. Decoder 300 is coupledto receive the formatted copy X1 102 of the source sequence of symbols,the first sequence of codewords Y1 103, and the second sequence ofcodewords Y2 104 transmitted by the encoder 100 over the medium. Decoder300 includes a primary decoder 301, a sequence of primary decodedsymbols 302, an intermediate interleaver 303, a sequence of intermediatesymbols 304, a secondary decoder 305, a sequence of secondary decodedsymbols 306, a de-interleaver 307, a sequence of estimated symbols Z1308, an interleaver 309, and a sequence of interleaved symbols 310.

The interleaver 309 permutes the formatted copy X1 102 of the sourcesequence of symbols into the sequence of interleaved symbols 310 in thesame manner that the interleaver 107 permutes the source sequence ofsymbols X 101 into the sequence of interleaved symbols 108. The primarydecoder 301 decodes the first sequence of codewords Y1 103 to correctany errors found in the formatted copy X1 102 of the source sequence ofsymbols. The corrected result from the primary decoder 301 is thesequence of primary decoded symbols 302. The intermediate interleaver303 permutes the sequence of primary decoded symbols 302 into thesequence of intermediate symbols 304 in the same manner that theinterleaver 107 permutes the source sequence of symbols X 101 into thesequence of interleaved symbols 108. The secondary decoder 305 decodesthe second sequence of codewords Y2 104 and uses the sequence ofintermediate symbols 304 to correct any errors in the sequence ofinterleaved symbols 310. Once the secondary decoder 305 begins receivingthe sequence of intermediate symbols 304, the secondary decoder 305 isdecoding in parallel with the primary decoder 301. The result from thesecondary decoder 305 is the sequence of secondary decoded symbols 306.The de-interleaver 307 permutes the sequence of secondary decodedsymbols 306 into the sequence of estimated symbols Z1 308. Thepermutations performed by the de-interleaver 307 reverse thepermutations performed by the interleaver 309.

As a person of ordinary skill in the art will now appreciate, theparticular decoding algorithm to be applied by the primary decoder 301and the secondary decoder 305 is determined by the encoding algorithmused in the primary encoder 105 and secondary encoder 106. As explainedabove, a variety of different algorithms compatible with the presentinvention may be used. Exemplary decoding algorithms for use in thepresent invention may include a Viterbi algorithm as described byCarson, cited above, on pages 501-503, maximum-likelihood algorithms,feedback algorithms, sequential decoding algorithms, one-way maximum aposteriori algorithms, or any other algorithms known in the art andcompatible with the present invention.

FIG. 4 illustrates an exemplary parallel decoder 400 consistent withfeatures and principles of the present invention. The parallel decoder400 incorporates the elements 301-310 of the exemplary decoder 300 inFIG. 3. In FIG. 4, the portions 301-308 are grouped into a first decodergroup 401. The parallel decoder 400 includes a second decoder group 410comprising a second primary decoder 402, a second sequence of primarydecoded symbols 403, a second intermediate interleaver 404, a secondsequence of intermediate symbols 405, a second secondary decoder 406, asecond sequence of secondary decoded symbols 407, a secondde-interleaver 408, and a second sequence of estimated symbols 409.Furthermore, there are a plurality of N decoder groups 411, wherein eachdecoder group comprises a primary decoder, a sequence of primary decodedsymbols, an intermediate interleaver, a sequence of intermediatesymbols, a secondary decoder, a sequence of secondary decoded symbols, ade-interleaver, and a sequence of estimated symbols. An N^(th) decodergroup 420 comprises an N^(th) primary decoder 412, an N^(th) sequence ofprimary decoded symbols 413, an N^(th) intermediate interleaver 414, anN^(th) sequence of intermediates symbols 415, an N^(th) secondarydecoder 416, an N^(th) sequence of secondary decoded symbols 417, anN^(th) de-interleaver 418, and an N^(th) sequence of estimated symbols419.

All the exemplary decoder groups 401, 410, 411, and 420 in FIG. 4operate in the same manner as described above for the first decodergroup 401, which corresponds to blocks 301-308 in FIG. 3. However, inthe parallel decoder 400 the sequence of estimated symbols from thede-interleaver in each group is used by the next decoder group as apriori information to perform its function. For example, the sequence ofestimated symbols 308 from the first decoder group 401 is used by theprimary decoder 402 in the second decoder group 410 to decode the firstsequence of codewords Y1 103 and correct any errors found in theformatted copy X1 102 of the source sequence of symbols. After furtherprocessing by the intermediate interleaver 404, secondary decoder 406,and de-interleaver 408 operating in the same manner consistent with thefirst decoder group 401, the resulting second sequence of estimatedsymbols 409 is used by the next decoder group. This use of the sequenceof estimated symbols by each successive decoder group 411 continues tothe last decoder group 420. The last decoder group 420 outputs a finalsequence of estimated symbols ZN 419.

FIGS. 5A and 5B illustrate timing diagrams 500 for operations of theexemplary primary encoder 105, secondary encoder 106, and interleaver107. As previously described, the interleaver 107 groups the sourcesequence of symbols X 101 into the sequence of blocks 205. Withreference also to FIGS. 2A-2C, a timing line 501 is segmented into equalunits of data, wherein a block of length L 209 symbols in the sourcesequence X 101 is one unit. The blocks in the timing line 501 arelabeled block 0, block 1, block 2, and so forth. For example,intra-block permutation begins immediately at a start of block 0 502once the source sequence of symbols X 101 is available. After one fullblock of the sequence of blocks 205 is intra-permuted by theintra-permuter 202, the second blocker 203 begins at a start of block 1503 to group the sequence of intra-permuted symbols 206 into thesequence of intra-permuted blocks 207. The inter-permuter 204 begins atthe start of block 1 503 to interleave the sequence of intra-permutedblocks 207 across the number of blocks B 210. The interleaver 107 beginsoutputting at a start of block B+1 504 the sequence of interleavedsymbols 108 after B blocks 210 have been inter-permuted. For example, ifthe number of blocks B 210 is three, then B+1 is equal to four. Theprimary encoder 105 begins encoding immediately at the start of block 0502 once the source sequence of symbols X 101 is available. Thesecondary encoder 106 begins encoding at the start of block B+1 504 oncethe sequence of interleaved symbols 108 becomes available.

FIG. 6 illustrates a timing diagram 600 for the exemplary paralleldecoder 400 consistent with features and principles of the presentinvention. With reference also to FIGS. 2C and 3, a timing line 601 issegmented into equal units of data, wherein a block of length L symbolsin the formatted copy X1 102 of the source sequence of symbols is oneunit. The blocks in the timing line 601 are labeled block 0, block 1,block 2, and so forth. With reference also to FIGS. 3 and 4, the primarydecoder 301 in the first decoder group 401 immediately begins decodingat a start of block 0 602 once formatted copy X1 of the source sequenceof symbols and the first sequence of codewords Y1 103 are available.Since the secondary decoder 305 in the first decoder group 401 needs towait for the intermediate interleaver 303 to output the sequence ofintermediate symbols 304, the secondary decoder 305 begins decoding at astart of block B+1 603. The primary decoder 402 in the second decodergroup 410 begins decoding at a start of block 2(B+1) 604 because itneeds to wait for the first sequence of secondary decoded symbols 306from the secondary decoder 305 in the first group 401 to bede-interleaved by the de-interleaver 307. For example, if the number ofblocks B 210 to inter-permute across is three, then 2(B+1) is equal toeight. The secondary decoder 406 in the second group 410 begins decodingat a start of block 3(B+1) 605 after the second sequence of primarydecoded symbols 403 from the primary decoder 402 in the second decodergroup 410 is interleaved by the intermediate interleaver 404 in thesecond decoder group 410. This process continues through subsequentdecoder groups 411. The N^(th) secondary decoder 416 begins decoding ata start of block (2N)(B+1) 606. Various embodiments consistent withfeatures and principles of the present invention are described in theforegoing description. However the embodiments are exemplary in natureand do not preclude the present invention from being applied inalternative embodiments. For example, the intra- and inter-permutationsperformed by interleaver 107 and illustrated in FIGS. 2B and 2C may beperformed in other manners consistent with the principles of theinvention. Further, although the intra- and inter-permutations follow aprescribed method for re-ordering symbols, the prescribed method maycombine one or more of the first block 201, the intra-permuter 202, thesecond blocker 203, and the inter-permuter functions 204.

By way of example, another embodiment of the invention involves aninterleaver construction with three processes as illustrated in FIG. 7.An entire input sequence of symbols 702 is segmented into M sub-blocksof symbols in a first process 704. Lengths of the sub-blocks may be thesame or different. For this example, each sub-block is assumed to be thesame length of R(2D+1) symbols, where R is a positive integer. Thesub-blocks are sequentially enumerated from 1 to M sub-blocks. A K^(th)sub-block is one of the M sub-blocks, where K is between 1 and M,inclusive.

Second and third processes 706 & 708 perform intra-block and inter-blockpermutations on the sub-blocks, respectively. The intra-blockpermutation 706 may be based on any known method, such as s-random orprime interleavers as known by persons of ordinary skill in the art. Theinter-block permutation process 708 swaps symbols in a sub-block withthose of N_(h) neighboring sub-blocks, where N_(h) is less than or equalto 2D sub-blocks and 2D is the permutation spread of the inter-blockpermutation in sub-blocks.

After the third process 708, the symbols in a K^(th) sub-block arespread over E_(K) sub-blocks prior to the K^(th) sub-block and L_(K)sub-blocks after the K^(th) sub-block. E_(K) is the lesser of D and(K−1), which is denoted as min(D, K−1). L_(K) is the lesser of D and(M−K), which is denoted as min(D, M−K).

Consistent with features and principles of the present invention, anoverall interleaving algorithm may be illustrated by a flowchart 800 inFIG. 8. At a start of the algorithm, K is set to one at step 802. Fromstep 802, if K is not less than (M+1) at step 804, then the algorithmstops at step 806. If K is less than (M+1), then intra-block permutationare performed on the K^(th) sub-block at step 808. E_(K) and Q are setto min(D, K−1) and zero at steps 810 and 812, respectively. From step812, if Q is not less than R(2D−1) at step 814, then K is incremented atstep 816 and the algorithm returns to step 804. If Q is less thanR(2D+1), then the algorithm returns to step 818. At step 818, if (K−Q−1)modulo (2D+1), denoted as mod(K−Q−1, 2D+1), is not less than E_(K), thenQ is incremented at step 820 and the algorithm returns to step 814. Ifmod((K−Q−1), (2D+1)) is less than E_(K), then the Q^(th) symbol in theK^(th) intra-permuted sub-block, denoted as [K; Q], is swapped with the(Q−mod(Q, 2D+1)+mod(K−1, 2D+1))^(th) symbol in the (K−mod(K−Q−1,2D+1))th intra-permuted sub-block, denoted as [Q−mod(Q, 2D+1)+mod(K−1,2D+1); K−mod(K−Q−1, 2D+1)], at step 822. After swapping at step 822, thealgorithm increments Q at step 820 and returns to step 814.

Both the intra-block and inter-block permutations in FIG. 7 may bedeterministic. Thus, once rules for both permutations are determined,the intra-block and inter-block permutations may be combined into asingle step. In another embodiment, a resulting interleaving algorithmcombining the permutations into a single step is illustrated asflowchart 900 in FIG. 9. At a start of the algorithm, K is set to one atstep 902. From step 902, if K is not less than (M+1) at step 904, thenthe algorithm stops at step 906. If K is less than (M+1), then E_(K) andQ are set to min(D, K−1) and zero at steps 908 and 910, respectively.Following step 910, if Q is less than R(2D+1) at step 912, then thealgorithm progresses to step 914. At step 914, Q′ is the intra-blockpermuted position of Q. If mod(K−Q′−1, 2D+1) is not less than E_(K),then the symbol at [mod(K, D+2); Q] is moved to [mod(k, D+2); Q′] atstep 916, Q is incremented at step 918, and the algorithm returns tostep 912. If mod(K−Q′−1, 2D+1) is less than E_(K) at step 914, then thesymbol at [mod(K−mod(K−Q′−1, 2D+1), D+2); Q′−mod(Q′, 2D+1)+mod(K−1,2D+1)] is moved to [mod(K, D+2); Q′] at step 920, the symbol at [mod(K,D+2); Q] is moved to [mod(K−mod(K−Q′−1, 2D+1), D+2); Q′−mod(Q′,2D+1)+mod(K−1, 2D+1)] at step 922, and the algorithm returns to step918. At step 912, if Q not is less than R(2D+1), then the algorithmprogresses to step 924. At step 924, if K is less than (L₁+1), then amod(K−D−1, D+2)^(th) sub-block of interleaved symbols is outputted atstep 926 and the algorithm progresses to step 928. If K is not less than(L₁+1), then the algorithm progresses directly to step 928. At step 928,if K is equal to M, then remaining mod(K−D+P, D+2)^(th) sub-blocks ofinterleaved symbols for P=1, 2, . . . , D are outputted and thealgorithm progresses to step 932. If K is not equal to M, then thealgorithm progresses directly to step 932. At step 932, K is incrementedand the algorithm progresses to step 904.

The algorithm illustrated by flowchart 900 may also be used forde-interleaving. When de-interleaving, Q′ at steps 920 and 922 isselected such that the algorithm reverses the intra-block permutation ofan interleaver.

In the foregoing description, various features are grouped together indifferent embodiments for purposes of streamlining the disclosure. Thismethod of disclosure is not to be interpreted as reflecting an intentionthat the claimed invention requires more features than are expresslyrecited in each claim. Rather, as the following claims reflect,inventive aspects lie in less than all features of a single foregoingdisclosed embodiment. Thus, the following claims are hereby incorporatedinto this Description of Embodiments, with each claim standing on itsown as a separate embodiment of the invention.

1. An encoder that operates on data represented in a source sequence ofsymbols, comprising: primary encoding means for encoding the sourcesequence of symbols into a first sequence of codewords; interleavingmeans for performing intra-block and inter-block permutations on thesource sequence of symbols to produce a sequence of interleaved symbols;and second encoding means for encoding the sequence of interleavedsymbols into a second sequence of codewords.
 2. The encoder of claim 1,whererin the interleaving means interleaves a sequence of input symbolsto produce a sequence of output symbols and includes: means for groupingthe sequence of input symbols into a sequence of blocks; means forpermuting the input symbols within each block of the sequence of blocksinto a sequence of intra-permuted symbols; means for grouping thesequence of intra-permuted symbols into a sequence of intra-permutedblocks; and means for permuting the symbols of the sequence ofintra-permuted blocks across the intra-permuted blocks into the sequenceof output symbols.
 3. The encoder of claim 2, further comprising outputmeans that combines and sends the source sequence of symbols, the firstsequence of codewords, and the second sequence of codewords to a medium.4. The encoder of claim 3, wherein the medium is one of a communicationschannel, ambient space, and a storage device. 5-19. (Canceled)
 20. Amethod of encoding data represented in a source sequence of symbols,comprising: encoding the source sequence of symbols into a firstsequence of codewords; interleaving the source sequence of symbols usingthe intra-block and inter-block permutations to produce a sequence ofinterleaved symbols; and encoding the sequence of interleaved symbolsinto a second sequence of codewords.
 21. The method of claim 20, whereinthe interleaving comprises: grouping a sequence of input symbols into asequence of blocks; permuting the input symbols within each block of thesequence of blocks into a sequence of intra-permuted symbols; groupingthe sequence of intra-permuted symbols into a sequence of intra-permutedblocks; and permuting the symbols of the sequence of intra-permutedblocks across the intra-permuted blocks into a sequence of outputsymbols.
 22. the method of claim 21, further comprising: combining andsending the source sequence of symbols, the first sequence of codewords,and the second sequence of codewords to a medium.
 23. The method ofclaim 22 further including providing the medium as one of acommunications channel, ambient space, and a storage device. 24-44.(Canceled)